<?php

	class Dados{

		private $nome;
		private $rg;
		private $cpf;
		private $nascimento;
		private $sexo;
		private $erros;

		public function __get( $key ) {
			return $this->$key;
		}

		public function __set( $key, $val ) {
			$this->$key = $val;
		}

		public function __construct( $nome, $rg, $cpf, $nascimento, $sexo ) {
			$this->nome = $nome;
			$this->rg = $rg;
			$this->cpf = $cpf;
			$this->nascimento = $nascimento;
			$this->sexo = $sexo;
			$this->isValid();
		}

		public function isValid() {
			$this->validaNome();
			$this->validaRg();
			$this->validaCpf();
			$this->validaSexo();
			$this->validaNascimento();
			if( !$this->erros )
				return true;
		}

		public function getErros() {
				return $this->erros;
		}


		private function validaNome() {
			if( strlen( trim( $this->nome ) ) < 2 )
				$this->erros[] = "Este nome (<b> " . $this->nome ."</b> ) é inválido. O nome deve conter mais de um caractere.";
		}

		private function validaRg() {
			if( !preg_match("/^[0-9][0-9]+[0-9]$/", $this->rg) )
				$this->erros[] = "Este rg (<b> " . $this->rg . "</b> ) é invalido . O rg deve conter somente números";
		}

		private function validaCpf() {
			if( !preg_match("/^[0-9]{3}\.[0-9]{3}\.[0-9]{3}-[0-9]{2}$/", $this->cpf) )
				$this->erros[] = "Este cpf (<b> " . $this->cpf . "</b> ) é inválido.";
		}

		private function validaNascimento() {
			$data = new Data ( $this->nascimento );
			if( !$data->isValid() )
				$this->erros[] = "Esta data de nascimento (<b> " . $this->nascimento . "</b> ) é inválida.";
		}

		private function validaSexo() {
			if( $this->sexo != "M" && $this->sexo != "F" )
				$this->erros[] = "Este sexo (<b> " . $this->sexo . "</b> )é invalido.";
		}
	}
?>